/*
 * Application.h
 *
 *  Created on: 2016年4月6日
 *      Author: terry
 */

#ifndef APPLICATION_H_
#define APPLICATION_H_

#include "BasicType.h"
#include "TSingleton.h"
#include "SharedPtr.h"
#include "TDiscreteArray.h"
#include "G711EncoderContext.h"


typedef std::shared_ptr< G711EncoderContext >		G711EncoderContextPtr;

typedef comn::DiscreteArray< G711EncoderContextPtr, 64 >		G711EncoderContextPtrArray;


class Application
{
public:
	static Application& instance();

public:
	Application();
	virtual ~Application();

	int init();

	void quit();

	int put(G711EncoderContextPtr& encoder);

	G711EncoderContextPtr get(int idx);

	G711EncoderContextPtr remove(int idx);

private:
	G711EncoderContextPtrArray	m_encoders;

};

#endif /* APPLICATION_H_ */
